home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / newsgroups / misc.19981211-19990422 / 000408_news@watsun.cc.columbia.edu _Thu Mar 25 17:17:19 1999.msg < prev    next >
Internet Message Format  |  2020-01-01  |  3KB

  1. Return-Path: <news@watsun.cc.columbia.edu>
  2. Received: from newsmaster.cc.columbia.edu (newsmaster.cc.columbia.edu [128.59.59.30])
  3.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id RAA21425
  4.     for <kermit.misc@watsun.cc.columbia.edu>; Thu, 25 Mar 1999 17:17:18 -0500 (EST)
  5. Received: (from news@localhost)
  6.     by newsmaster.cc.columbia.edu (8.8.5/8.8.5) id QAA26899
  7.     for kermit.misc@watsun.cc.columbia.edu; Thu, 25 Mar 1999 16:50:37 -0500 (EST)
  8. X-Authentication-Warning: newsmaster.cc.columbia.edu: news set sender to <news> using -f
  9. From: dn5006@my-dejanews.com
  10. Subject: Number with a personality
  11. Date: Thu, 25 Mar 1999 21:35:22 GMT
  12. Organization: Deja News - The Leader in Internet Discussion
  13. Message-ID: <7dea6q$6r3$1@nnrp1.dejanews.com>
  14. To: kermit.misc@watsun.cc.columbia.edu
  15.  
  16. ; OBJECT-ORIENTED PROGRAMMING IN KERMIT 95
  17. ; THE FOLLOWING SCRIPT DEFINES A CLASS NUMBER WITH A RANGE
  18.  
  19. define number {
  20.     local self
  21.     assign self \%1
  22.  
  23.     _assign \m(self).get {
  24.         echo \\m(\m(self).val)
  25.         return \m(\%v.val)
  26.     }
  27.     _define \m(self).set {
  28.         local \%v
  29.         assign \%v \fbreak(\v(macro), .)
  30.         \%v.range_check  \%1 \m(\%v.max) \m(\%v.min)
  31.         if not success end 1
  32.         _assign \%v.val \%1
  33.         echo \m(\%v.val)
  34.         return \m(\%v.val)
  35.     }
  36.     _define \m(self).add {
  37.         local \%v \%s
  38.         assign \%v \fbreak(\v(macro), .)
  39.         assign \%s \m(\%v.val)
  40.         assign \%s \feval(\%s + \%1)
  41.         \%v.range_check  \%s \m(\%v.max) \m(\%v.min)
  42.         if not success end 1
  43.         _assign \%v.val \%s
  44.         echo \m(\%v.val)
  45.         return \m(\%v.val)
  46.     }
  47.     _define \m(self).range_check {
  48.         if > \%1 \%2 end 1 too big
  49.         if < \%1 \%3 end 1 too small
  50.     }
  51.     _assign \m(self).destroy {
  52.         _define \m(self).val
  53.         _define \m(self).get
  54.         _define \m(self).add
  55.         _define \m(self).set
  56.         _define \m(self).range_check
  57.     }
  58.  
  59.     \m(self).range_check \%2 \%4 \%3
  60.     xif not success {
  61.         \m(self).destroy)
  62.         end 1
  63.     } else {
  64.         _assign \m(self).val \%2
  65.         _assign \m(self).min \%3
  66.         _assign \m(self).max \%4
  67.     }
  68.  
  69. }
  70.  
  71.  
  72. ;    THIS IS MY FIRST NUMBER THAT HAS AN INITIAL VALUE 18,
  73. ;    ALLOWABLE RANGE 5 ... 20
  74.     number first_number 18 5 20
  75.  
  76. ;    I CHANGE ITS VALUE FROM 18 TO 9
  77.     first_number.set 9
  78.  
  79. ;    I ADD 5 TO IT
  80.     first_number.add 5
  81.  
  82. ;    I TRY TO SET IT TO 30 and FAIL
  83.     first_number.set 30
  84.  
  85. ;    I TRY ADD 21 TO IT AND FAIL
  86.     first_number.add 21
  87.  
  88. ;    ITS VALUE IS STILL 14
  89.     first_number.get
  90.  
  91. ;    I ERASE IT
  92.     first_number.destroy
  93.  
  94. ; This is rather smalltalk or C++, Kermit 95 - what a cute language!
  95.  
  96. -----------== Posted via Deja News, The Discussion Network ==----------
  97. http://www.dejanews.com/       Search, Read, Discuss, or Start Your Own